在Linux中利用Service命令添加系统服务及开机自启动

您所在的位置:网站首页 linux 服务停止自启动 在Linux中利用Service命令添加系统服务及开机自启动

在Linux中利用Service命令添加系统服务及开机自启动

2024-07-13 12:25:13| 来源: 网络整理| 查看: 265

近期由于做嵌入式项目需要,要求将编写的程序在板载系统开机时自启动。这里做个笔记,备忘。

1 概念

通过查资料发现linux启动服务是用SERVICE +COMMAND。这里的command命令本身也是一个脚本。比如说:service networking start;中networking就是一个shell脚本。注意:这里的脚本没有文件后缀.sh。

接下来,将介绍如何做一个属于自己的service命令。

首先可以了解一下service这个命令的原理。这里我就偷一下懒,你们自己去问度娘或找一下“man”(在终端上man service下)。

接下来我简单说下service的运行过程。以networking为例:service networking start。

首先,sevice 会去/etc/init.d下寻找networking脚本,start是networking脚本里的一个参数(你可以去查看networking这个脚本支持的参数),然后告诉系统运行networking这个脚本,剩下的事情就交给networking脚本去坐了,事实就是这么简单。

至此,你们应该知道如何添加一个service命令了吧。

编写一个脚本,然后把它放在/etc/init.d这个目录下,再用service + 脚本名字 运行即可。如果是要开机自动启动那就得用chkconfig命令了。

注意: A、service这个命令往往是即时生效,不用开关机,但是重启后服务会回到默认状态。

B、chkconfig是用于把服务加到开机自动启动列表里,只要启动它,就能自动启动,重启后永久生效即:

chkconfig --add COMMAND  chkconfig COMMAND on/off    重启后永久生效

如果你们的机器不支持chkconfig命令,下面提供另一种开机自动启动系统服务的方法。

首先确保脚本已在/etc/init.d/目录下,然后用:

update-rc.d xxx defaults NN

命令(NN为启动顺序),将脚本添加到初始化执行的队列中去。

注意如果脚本需要用到网络,则NN需设置一个比较大的数字,如99。

 

另外一种是

(1) 将脚本设为可执行 (2) 在rcN.d下执行

sudo ln ../init.d/script-name S99script

 

2 实例

接下来我带大家做一下试验,帮助大家更好的理解如何在Linux中利用Service命令添加系统服务

2.1 首先编写demo程序:hello.c

#include main() { FILE *fp; char a[] = "Hello world!"; fp=fopen("hhh.txt","a+"); fputs(a,fp); return 0; }

2.2 编译hello.c

gcc -g hello.c -o hello

2.3 在/etc/init.d目录下添加脚本test

#!/bin/bash start() { echo "------------------test----------------" cd /home/xxx/test/ ./hello } case $1 in start): start ;; stop): echo "-----------------stop------------------" ;; esac exit 0

2.4 设置权限

chmod 755 /etc/init.d/test

2.5 利用service启动hello

service test start

2.6 设置开机自动启动

chkconfig --add test chkconfig test on/off //重启后永久生效

如果2.6不起作用,按2.7提供的方法执行

2.7 通过update-rc.d 命名设置开机自启动

cd /etc/init.d sudo update-rc.d test defaults 95

 注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。该命令的输出信息参考如下:

update-rc.d: warning: /etc/init.d/test missing LSB information update-rc.d: see Adding system startup for /etc/init.d/test ... /etc/rc0.d/K95test -> ../init.d/test /etc/rc1.d/K95test -> ../init.d/test /etc/rc6.d/K95test -> ../init.d/test /etc/rc2.d/S95test -> ../init.d/test /etc/rc3.d/S95test -> ../init.d/test /etc/rc4.d/S95test -> ../init.d/test /etc/rc5.d/S95test -> ../init.d/test

卸载启动脚本的方法:

cd /etc/init.d sudo update-rc.d -f test remove

命令输出的信息参考如下:

 

Removing any system startup links for /etc/init.d/test ... /etc/rc0.d/K95test /etc/rc1.d/K95test /etc/rc2.d/S95test /etc/rc3.d/S95test /etc/rc4.d/S95test /etc/rc5.d/S95test /etc/rc6.d/K95test 3 Ubuntu设置开机启动脚本的方法

如果2.7提供的方法不行,这里提供另一种方法。

3.1 /etc/rc.local脚本

rc.local脚本是一个ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令。该脚本位于/etc/路径下,需要root权限才能修改。

该脚本具体格式如下:

#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0

注意: 

一定要将命令添加在 exit 0之前,即在第13行添加;

命令即为脚本文件所在的绝对路径,如在第13行添加 /usr/local/bin/test;

如果脚本中有死循环,需要在该脚本路径后加上 & ,让其后台执行;

一定要给脚本文件赋可执行权限。

sudo chmod 777 test

或者在 /etc/init.d/rc.local 中在最后加上脚本的绝对路径也可以开机自启动。

3.2 使用 ln -s 建立软连接启动

Ubuntu还可以通过 在 /etc/rc.d/rc*.d 目录中建立 /etc/init.d/ 服务的软链接 的方式,实现程序开启自启动。

具体方法见 《 Ubuntu中利用 sysv-rc-conf 设置开机自启动 》中的 Linux 使用 ln -s 建立软连接启动。

 

另外还有一点要说的就是,脚本test在后台执行后,我尝试使用

ps -ef | grep test | grep -v grep

去查看脚本test的进程以确定它是否被执行,但是查不到。后来一想,可能是shell执行了该脚本,所以无法查到该脚本的进程。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭